import zclass.MyObject;

/**
 * 外观模式（Facade Pattern）是一种结构型设计模式，它的主要目标是提供一个统一的接口，
 * 用于客户端与复杂的子系统之间的交互，简化了客户端代码，隐藏了子系统内部的复杂性。
 * 外观模式通常应用于子系统组件众多，且客户端需要频繁与子系统交互的情况。
 */
public class Main {
    /**
     * 下面我以JVM的类加载子系统进行示例
     * 众所周知，类加载子系统在加载类时会经过三个阶段
     * 加载、链接、初始化
     * 而我们的类加载器就是外观类，它负责协调加载、链接、初始化三个阶段，
     * 在使用类加载器时只需要调用类加载器的loadClass方法即可，如何载入一个class文件的细节是无需关心的
     */
    public static void main(String[] args) {
        JVMClassLoaderSystem system = new JVMClassLoaderSystem();
        // 使用者只需要调用加载方法即可使用，就像封装系统对外提供API一样
        Class<MyObject> myObjectClass = system.loadMyObjectClass();
        System.out.println(myObjectClass);
    }
}